System and method for allocation of resources for processing video

ABSTRACT

System and method for efficient allocation of resources for processing video. According to an embodiment, the present invention provides a method for processing video. The method includes providing a system for processing video. The system is characterized by a known quantity of processing power. The method also includes providing a video file, which is characterized by a plurality of properties. The plurality of properties includes a file type, resolution, bit rate, frame rate, video quality, etc. The video type is associated with a first compression method. The method further includes determining the video type and the first compression method. Additionally, the method includes determining a first usage for the video file. For example, the first usage being associated with the video type. The method further includes decoding the video. Additionally, the method includes determining a residual processing power, which associated with the first usage. The method also includes providing a first plurality of processing modules.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is a division of U.S. application Ser. No.11/766,685, filed on Jun. 21, 2007, entitled “System And Method ForAllocation of Resources For Processing Video,” which claims benefitunder 35 USC 119(e) of U.S. provisional Application No. 60/867,626,filed Nov. 29, 2006, entitled “System And Method to Maximize VideoQuality Under Constrained Computational Resources,” the contents ofwhich are incorporated herein by reference in their entirety.

STATEMENT AS TO RIGHTS TO INVENTIONS MADE UNDER FEDERALLY SPONSOREDRESEARCH OR DEVELOPMENT

NOT APPLICABLE

REFERENCE TO A “SEQUENCE LISTING,” A TABLE, OR A COMPUTER PROGRAMLISTING APPENDIX SUBMITTED ON A COMPACT DISK

NOT APPLICABLE

BACKGROUND OF THE INVENTION

The present invention relates in general to video and image processingtechniques. More particularly, the invention provides a method andsystem for efficiently enhancing videos and images. In an embodiment,the present invention provides a technique for selecting processtechniques to be performed on videos based on various factors, such asavailable processing power, compression type, etc. For example, theembodiment dynamically constructs a system for processing videos. Merelyby way of example, the invention is described as it applies todynamically processing video for viewing, but it should be recognizedthat the invention has a broader range of applicability.

Over the last decade, with advent of consumer electronics and morespecifically media players (e.g., DVD player, computer, portablemultimedia devices, cellular phones, etc.) are used for playing mediacontents in various formats. For a variety of reasons, media contentsoften need to be decompressed and processed (e.g., enhanced, adjusted,etc.) before they are presented for viewing and/or other purposes.

Typically, video enhancements include a de-interlacing, removingcompression artifacts, scaling, etc. For these, certain conventionaltechniques have been developed and improved. Some of the conventionaltechniques such as noise reduction, contrast enhancement, etc., arederived from traditional image processing techniques. As a result, thesetechniques are often inadequate, especially for real time applications.For example, various applications such as video enhancements areperformed without regard to the specific characteristics for the video.As a result, these conventional techniques often leads to poorperformance and unacceptable output.

Hence it is highly desirable to improve techniques for effectively andefficiently enhancing videos and images, especially for low-powerhandheld devices.

BRIEF SUMMARY OF THE INVENTION

The present invention relates in general to video and image processingtechniques. More particularly, the invention provides a method andsystem for efficiently enhancing videos and images. In an embodiment,the present invention provides a technique for selecting processing tobe performed on videos based on various factors, such as availableprocessing power, compression type, etc. For example, the embodimentdynamically constructs a system for processing videos. Merely by way ofexample, the invention is described as it applies to dynamicallyprocessing video for viewing, but it should be recognized that theinvention has a broader range of applicability.

According to an embodiment, the present invention provides a method forprocessing video. The method includes providing a system for processingvideo. The system is characterized by a known quantity of processingpower (e.g., measured in MHz). The method also includes providing avideo file, which is characterized by a plurality of properties. Theplurality of properties includes a video format and a video size (bitrate). The video type is associated with a first compression method. Themethod further includes determining the video type and the firstcompression method. Additionally, the method includes determining afirst usage for the video file. For example, the first usage beingassociated with the video type. The method further includes decoding thevideo file. Additionally, the method includes determining a residualprocessing power, which associated with the first usage. The method alsoincludes providing a first plurality of processing modules. The methodincludes selecting a second plurality of processing modules based on theresidual processing power. The second plurality of processing modules isa subset of the first plurality of processing modules. Moreover, themethod includes processing the video file using the second plurality ofprocessing modules. The method further includes providing an output.

According to yet another embodiment, the present invention provides amethod for processing video. The method includes providing a system forprocessing video in a real time. For example, the real time beingassociating with a video playback speed. The system is characterized bya known quantity of processing power. The processing power is based onat least a predetermined available usage of a central processing unit.The method also includes providing a video, the video beingcharacterized a plurality of properties that include a video type and avideo bit rate. The video type is configured by a first compressiontype. The method further includes determining the video type and thefirst compression type. The method also includes determining a firstusage of the predetermined available usage of the central processingunit for the video. The first usage is associated with the video typeand the video bit rate. The method additionally includes processing thevideo to decode the video from the video type being in the firstcompression type to an uncompressed type. The method further includesdetermining a residual processing power from the first usage of thepredetermined available usage of the central processing unit. The methodalso includes providing a first plurality of processing modules.Furthermore, the method includes selecting a second plurality ofprocessing modules based on the residual processing power. The secondplurality of processing modules is a subset of the first plurality ofprocessing modules. Furthermore, the method includes processing thevideo using the second plurality of processing modules. Moreover, themethod includes providing an output in accordance to the real time.

According to another embodiment, the present invention provides a methodfor processing a video. The method includes providing a system forprocessing video. The system is characterized by a known quantity ofprocessing power. The method includes providing a video file, which ischaracterized a plurality of properties. The plurality of propertiesincludes a video type and a video size. The video type is associatedwith a first compression method. The method further includes determininga first usage that is associated with decoding the video file. Inaddition, the method includes determining a second usage that isassociated with scaling the video file. Also, the method includesselecting a plurality of processing modules based on the first usage andsecond usage. Moreover, the method includes processing the video fileusing the plurality of processing modules. The method additionallyincludes providing an output for a display.

According to yet another embodiment, the present invention provides asystem for processing a video. The system includes a memory that isconfigured to store instructions. The system also includes a processorconfigured to execute the instructions. For example, the processor ischaracterized by a known quantity of processing power. The systemadditionally includes a user interface and a display. The instructionsinclude a plurality of software modules. For example, the softwaremodules include a decompression module, a control module, and a firstplurality of processing modules. The control module is configured todetermine a plurality of characteristics of a video file. The pluralityof characteristics includes a file type, resolution, bit rate, framerate, video quality, etc. The file type is associated with a compressionmethod. The control module is further configured to determine a firstusage. The first usage is associated with the decoding the video file.The control module is further configured to select a second plurality ofprocessing modules that is a subset of the first plurality of processingmodule. The second plurality of processing modules is configured toprocess the video file. The display is configured to display theprocessed video file.

It is to be appreciated that embodiments according to the presentinvention offer various advantages over conventional techniques. Forexample, the embodiments of the present invention provide an efficientsolution for enhancing videos and/or images. In a specific embodiment,the present invention provides a mechanism for an optimal use ofprocessing resources by dynamically allocating resource of videoprocessing based on a variety of factors, such as video bit rate, videotype, video size, etc. Furthermore, embodiments of the present inventioncan be integrated into conventional systems with ease. For example,various embodiments of the present invention are implemented as softwaremodular components in a general purpose computer. As another example,various embodiments are implemented with currently available hardwarecomponents, such as hardware decoders, memory components, etc. There areother benefits as well.

Various additional objects, features and advantages of the presentinvention can be more fully appreciated with reference to the detaileddescription and accompanying drawings that follow.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified diagram illustrating a system according to anembodiment of the present invention.

FIG. 2 is a simplified diagram illustrating a video process methodaccording to an embodiment of the present invention.

FIG. 3 is a simplified diagram illustrating a video process flowaccording to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

The present invention relates in general to video and image processingtechniques. More particularly, the invention provides a method andsystem for efficiently enhancing videos and images. In an embodiment,the present invention provides a technique for selecting processing tobe performed on videos based on various factors, such as availableprocessing power, compression type, etc. For example, the embodimentdynamically constructs a system for processing videos. Merely by way ofexample, the invention is described as it applies to dynamicallyprocessing video for viewing, but it should be recognized that theinvention has a broader range of applicability.

As discussed above, conventional techniques for processing images andvideos are often inadequate. More specifically, various convention videoprocessing solutions are not flexible and efficient enough to processand/or enhance various type of videos in real-time applications. Incertain scenarios, software video process solutions require moreprocessing power than what is available. As a result, performance ofconventional video solutions are often inadequate. For example, variousvideo processing solution may work for certain systems but not others,as certain systems may be slower or use processing power for otherapplications. As described below, it is to be appreciated thatembodiments of the present invention provide techniques that allowprocessing of video and/or graphics to be dynamically determined basedon a various factors based on the video and/or graphics. For example,decoding H.264 video often consumes three times as much of resources asdecoding MPEG 2 video of comparable quality.

In a stereotypical conventional system for processing video, a same setof processes is applied to video files, regardless of what are the typesof these video files. For, video processing involves decompression,scaling, and enhancements. As an example, enhancements such asde-blocking, are typically desirable for many types of video files,including MPEG 2 and MPEG 4 files. However, it is often unnecessary toapply this enhancement to certain kind of video files. For example,de-blocking is an integral part in decoding an H.264 standard videofile. Applying de-blocking on a decompressed H.264 video is wasteful onsystem resources and often adversely affect the video quality. It is tobe appreciated that various embodiments of the present invention takesfile type, bit rate, resolution and/or compression method into accountwhen applying various processes and/or enhances on video files.

In addition, system or devices for processing video typically havelimited processing power. A given system can only perform a limitednumber of operations within a given period of time. When the system isrequired to process video and/or images that at a rate beyond its power,the system often slows down and/or stop the process, which isunacceptable for video playback applications in real time. In a specificexample, a system has sufficient amount of processing powers todecompress an MPEG 2 video and to perform various types of enhancements.However, since decoding an MPEG 4 video is computationally more costlythan decoding an MPEG 2 video, a system that is able to decompress andenhance an MPEG 2 video may not have sufficient resource to do the samewith an MPEG 4 video. As a result, the system may not be able toproperly play the video (e.g., system lags, constants stoppages, etc.),and sometimes the system may not be able to play these files at all.

In contrast, various embodiments of the present invention dynamicallydetermines what processes are to be applied to a video based on variouscharacteristics of the system and the file. For example, characteristicsfor the video include video compression bit rate, format, type, etc. Asanother example, the characteristic of the system include connectionspeed, processor speed, available system resources, memory, storage,etc. Taking these factors into account, various embodiments of thepresent invention dynamically construct system for processing videosand/or images that is efficient and effective.

FIG. 1 is a simplified diagram illustrating a system according to anembodiment of the present invention. This diagram is merely an example,which should not unduly limit the scope of the claims. One of ordinaryskill in the art would recognize many variations, alternatives, andmodifications. As shown in FIG. 1, a system 100 includes a display 101,a processor 103, an optical drive 107, a keyboard 104, a mouse 105, annetwork 102, and a media source 106. The system 100 is specificallyconfigured to processing videos according to an embodiment of thepresent invention. For example, the processor 103 is configured toexecute various modules for processing video, such as a decompressionmodule, a control module, and a video enhancing modules. For example,the control module is configured to determine a plurality ofcharacteristics of a video file, such as bit rate, file type, fileformat, etc. As an example, the file type is associated with acompression method. The decompression module is use to decompress videofile. For example, the decompression module includes a video decoder.The video enhancing modules are employed for enhancing videos in variousways, such as removing video artifacts, enhancing color and contrast,adjust luminance and chrominance, etc. As mentioned above, the videoenhancing modules are dynamically selected and used based on a varietyof factors.

According to various embodiments, the system 100 obtain videos throughvarious sources. For example, the system 100 receives stream video fromthe network 102. For example, the network 102 is connected to theInternet and the system 100 receives the stream video through theinternet. As another example, the system 100 retrieves a video file fromits own storage system. In yet another example, the system 100 getsvideo files from the media source 106, which may be a cable box, anexternal storage unit, a DVD player, a game console, etc.

The keyboard 104 and the mouse 105 are used to provide user input forusers. In various embodiments, the user input is implemented with otherdevices, such as touch screen, cell phone, thumb board, remotecontroller, etc.

According to an embodiment, the display 101 provides video displayand/or user interface. For example, the display 101 may be an LCDdisplay, a CRT display, a plasma display, etc. Depending on theapplication, the system 100 may include additional display components.

In certain embodiments, the system 100 as shown is implemented using ageneral purpose computer. In various applications, the system 100 may beimplemented with a mobile device, a media player, a television, etc.

FIG. 2 is a simplified diagram illustrating a video process methodaccording to an embodiment of the present invention. This diagram ismerely an example, which should not unduly limit the scope of theclaims. One of ordinary skill in the art would recognize manyvariations, alternatives, and modifications. For example, various stepsprocessed as illustrated may be added, removed, modified, replaced,rearranged, repeated, and/or overlapped. As explained above, the processflow may be implemented for a variety of devices, such as a personalcomputer, a media player, a cellular phone, a PDA, etc.

At step 201, a system for processing video is provided. Depending on theapplication, the system may be implemented for a variety of devices,such as a personal computer, a media player, a cellular phone, a PDA,etc. The processing power of the system limited by its availableresources, such as processing speed, memory, power, etc. For example,the processing speed is a metric in which a computation unit is capableof performing calculations. Typically, the processing speed is importantfor performing video decompression and enhancements, as these processesare processor intensive. Memory and power consumption are also importantmetrics. For example, a processor typically consumes more power whenoperating at a high speed. In certain applications, such as for portabledevices, it is often important to reduce energy consumption and toprolong the “on” time. In addition, the processing power of a systemsometimes is limited by the operating temperature of the system. Thatis, performing high speed processes for long durations can lead tosystem overheating.

At step 202, a video file is obtained. The video file is characterizedby a variety of properties, which include but not limited to bit rate,compression method for the video component, compression method for theaudio component, the codec used, duration, native size, etc. Dependingon the application, the video file is obtained in various ways. Forexample, the system receives stream video from a network, which may be alocal area network, the Internet, Wi-Fi network, CDMA network, GSMnetwork, etc. For example, the system receives the stream video throughthe Internet. As another example, the system retrieves a video file fromits own storage system. In yet another example, the system gets videofiles from a media source, which may be a cable box, an external storageunit, a DVD player, a game console, etc.

At step 203, various properties for the video file are determined.Depending on the application and the need, these properties may bedetermined in various ways. According to a specific embodiment, thesystem examines a header for the video file and extract variousinformation from the head file. In another embodiment, the systemdetermines certain properties of the video file based on the fileextension or source. In yet another embodiment, the system obtainsdetailed information of the file by thoroughly and/or partially parsingthrough the video file. For example, thorough parsing through the videofile for statistical information allows more efficient and effectiveprocessing in certain applications. For example, the system determinesthat the brightness level for the entire video is too low (e.g., theentire video is underexposed), and the system provides a globalbrightness boost based on this information, as compared to determiningand boosting brightness level in real time.

At step 204, the system determines a processing power usage for decodingthe video. According to embodiments, various types of metrics are usedfor measuring the processing power usage. For example, the systemdetermines the amount of processing power measured in clock speed (e.g.,MHz) required for decoding the video file. In a specific embodiment, thedetermination of amount of processing power used is based on theproperties of the video as described above. For example, decoding anMPEG 4 video at the VGA resolution consumes up to 500 Mhz or 20% of theprocessing power for a system.

At step 205, the system determines the amount of residual processingpower and/or other resources that is available for performing variousprocesses for the video. For example, the decoding of the video has ahigh priority than performing other processes for the video, as fastdecoding speed is necessary for real time playback of videos. Forexample, the residual processing power is a function of the totalprocessing power less the amount processing power usage for decoding thevideo. In certain embodiments, the system uses processing power forother applications has other applications, such as running the operatingsystem, receiving telephone calls, etc., that takes higher priority thanenhancing the video for playback. For these applications, the amount ofresidual processing power and/or resource equal what is still availableafter these resources have been allocated.

At step 206, the system selects what video processing modules to be usedfor processing and/or enhancing the video. According to variousembodiments, the processing modules may include, but not limited to,de-ringing, de-mosquito, de-blocking, de-interlacing, luminanceadjustment, chrominance adjust, LCD boost, etc. As an example, theprocessing modules are software modules, and processing of thesesoftware requires processing power. According to certain embodiments,the processing modules are hardware modules that consumes energy, andthe processing of the modules uses energy of the system. In addition toprocessing power available, in certain embodiments the system selectsvideo processing modules based on the video type. For example, for H.264format video files, a de-blocking process is performed when videos aredecoded, and therefore, the system does not perform de-blocking afterthe decoding process. According to a specific embodiment, the selectionof video processing module is based on certain statisticalcharacteristics of the video file (or video stream in a streamingscenario), such as overall brightness level, appearance of codingartifacts, noise level, color, etc.

In various embodiments, the system is configured to dynamically selectwhat processing modules are used in real time. In a specific embodiment,the system temporarily stops a low priority processing for enhancing thevideo upon a detection of a reduction in available system processingpower (e.g., due to incoming calls, background software processes,etc.). On the other hand, the system initiates more processes forenhancing video upon a detection of an increase in the availableprocessing power.

In a specific embodiment, the system also determines the order in whichprocessing is to be performed. For example, if the video is to be scaledup, various processes (e.g., enhancement, adjustment, etc.) areperformed before the scaling. On the other hand, if the video is to bescaled down, various processes (e.g., enhancement, adjustment, etc.) areperformed after the scaling. As a result, processing is selectivelyperformed on the smaller video, thereby reducing the amount ofcomputational resources needed.

According to certain embodiments, the system selects the what videoprocessing modules to be used based on a lookup table. For example,based on the processing power available, the system checks a look uptable to determine what component to be selected. For example, thelookup table is shown below:

TABLE 1 avail. noise de- lumi- chromi- resource decoding scalingreduction interlacing nance nance 100 MHz x x x 200 MHz x x x x 300 MHzx x x x x 400 MHz x x x x x x

At step 207, the system determines the order in which processes areperformed. For example, de-blocking is typically performed beforede-interlacing, for better result and higher efficiency. In certainembodiments, certain processes for enhancing the video are performed inparallel.

At step 208, the selected processes are performed to enhance the videoquality.

At step 209, the processed video is provided as an output. According toan embodiment, the processed video is display on an LCD screen forviewing. For example, the processed output video is uncompressed.According to another embodiment, the processed video is provided to anstorage source. In a specific embodiment, the output is a video streamfor transmission over a communication network.

FIG. 3 is a simplified diagram illustrating a video process flowaccording to an embodiment of the present invention. This diagram ismerely an example, which should not unduly limit the scope of theclaims. One of ordinary skill in the art would recognize manyvariations, alternatives, and modifications. For example, various stepsprocessed as illustrated may be added, removed, modified, replaced,rearranged, repeated, and/or overlapped.

A system 300 includes modules 301-311. A video file 320 is provided tothe system 300 for processing. The system 300 first determines variouscharacteristics associated with the video file. For example, thesecharacteristics include video format, bit rate, file type, codecassociated with the video file, file length, playtime, native displaysize, etc.

Next the module 302 performs decoding and/or decompression. As explainedabove, the module 302 is associated with a high priority, which allowsthis module to function before other modules.

The scaling module 303 is provided to ensure that the file output fromthe system based on the video module is correct. For example, thescaling module 303 scales up the size of the video to fill a screen withor without maintaining the aspect ratio. Depending on the application,the scaling process may be altered during the playback of a video file.For example, when a video display size is change, the scaling process ischanged accordingly. As an example, when the display size is changedfrom a large size to the size of the video, the scaling process is notperformed.

The selector module 304 determines what video processes are performed.As explained above, the system is configured to dynamically select whatprocessing modules are used in real time. In a specific embodiment, thesystem temporarily stops a low priority processing for enhancing thevideo upon a detection of a reduction in available system processingpower (e.g., due to incoming calls, background software processes,etc.). On the other hand, the system initiates more processes forenhancing video upon a detection of an increase in the availableprocessing power. As shown, based on various factors, the selectormodule 304 determines which of the modules 305-310 should be used.

The output module 311 is used to provide the video output. For example,the output module 311 performs various functions to ensure the videooutput is compatible to the output device, such as LCD display, storagedevice, etc.

According to an embodiment, the present invention provides a method forprocessing video. The method includes providing a system for processingvideo. The system is characterized by a known quantity of processingpower. The method also includes providing a video file, which ischaracterized by a plurality of properties. The plurality of propertiesincludes a video type, video bit rate, and a video size. The video typeis associated with a first compression method. The method furtherincludes determining the video type and the first compression method.Additionally, the method includes determining a first usage for thevideo file. For example, the first usage being associated with the videotype. The method further includes decoding the video file. Additionally,the method includes determining a residual processing power, whichassociated with the first usage. The method also includes providing afirst plurality of processing modules. The method includes selecting asecond plurality of processing modules based on the residual processingpower. The second plurality of processing modules is a subset of thefirst plurality of processing modules. Moreover, the method includesprocessing the video file using the second plurality of processingmodules. The method further includes providing an output. For example,the embodiment is illustrated according to FIG. 2.

According to another embodiment, the present invention provides a methodfor processing a video. The method includes providing a system forprocessing video. The system is characterized by a known quantity ofprocessing power. The method includes providing a video file, which ischaracterized a plurality of properties. The plurality of propertiesincludes a video type, video bit rate, and a video size. The video typeis associated with a first compression method. The method furtherincludes determining a first usage that is associated with decoding thevideo file. In addition, the method includes determining a second usagethat is associated with scaling the video file. Also, the methodincludes selecting a plurality of processing modules based on the firstusage and second usage. Moreover, the method includes processing thevideo file using the plurality of processing modules. The methodadditionally includes providing an output for a display. For example,the embodiment is illustrated according to FIG. 2.

According to yet another embodiment, the present invention provides asystem for processing a video. The system includes a memory that isconfigured to store instructions. The system also includes a processorconfigured to execute the instructions. For example, the processor ischaracterized by a known quantity of processing power. The systemadditionally includes a user interface and a display. The instructionsinclude a plurality of software modules. For example, the softwaremodules include a decompression module, a control module, and a firstplurality of processing modules. The control module is configured todetermine a plurality of characteristics of a video file. For example,the plurality of characteristics includes a file type, resolution, bitrate, frame rate, video quality, etc. The file type is associated with acompression method. The control module is further configured todetermine a first usage. The first usage is associated with the decodingthe video file. The control module is further configured to select asecond plurality of processing modules that is a subset of the firstplurality of processing module. The second plurality of processingmodules is configured to process the video file. The display isconfigured to display the processed video file. For example, theembodiment is illustrated according to FIG. 1.

It is to be appreciated that embodiments according to the presentinvention offer various advantages over conventional techniques. Forexample, the embodiments of the present invention provide an efficientsolution for enhancing videos and/or images. More specifically,embodiments of the present invention are suitable for real time videoprocessing and/or playback. In a specific embodiment, the presentinvention provides a mechanism for an optimal use of processingresources by dynamically allocating resource of video processing basedon a variety of factors, such as video type, video size, etc.Furthermore, embodiments of the present invention can be integrated intoconventional systems with ease. For example, various embodiments of thepresent invention are implemented as software modular components in ageneral purpose computer. As another example, various embodiments areimplemented with currently available hardware components, such ashardware decoders, memory components, etc. There are other benefits aswell.

Although specific embodiments of the present invention have beendescribed, it will be understood by those of skill in the art that thereare other embodiments that are equivalent to the described embodiments.Accordingly, it is to be understood that the invention is not to belimited by the specific illustrated embodiments, but only by the scopeof the appended claims.

1. A method for processing video in a system for processing video in areal time, the real time being associated with a video playback speed,the system being characterized by a first plurality of processingmodules and a known quantity of processing power, the processing powerbeing based on at least a predetermined available usage of a centralprocessing unit, the method comprising: providing a video, the videobeing characterized a plurality of properties, the plurality ofproperties including a video type and a video bit rate, the video typebeing configured by a first compression type; determining the video typeand the first compression type; determining a first usage of thepredetermined available usage of the central processing unit for thevideo, the first usage being associated with the video type and thevideo bit rate; processing the video to decode the video from the videotype being in the first compression type to an uncompressed type;determining a residual processing power from the first usage of thepredetermined available usage of the central processing unit; selectinga second plurality of processing modules based on the residualprocessing power, the second plurality of processing modules being asubset of the first plurality of processing modules; processing thevideo using the second plurality of processing modules; scaling thevideo to match an output size; and providing an output in accordance tothe real time.
 2. The method of claim 1 wherein the processing power isfurther based on an available system resources.
 3. The method of claim 1wherein the video comprises a video stream.
 4. The method of claim 1wherein the video comprises a video file.
 5. The method of claim 1further comprising: receiving the video from a network location;buffering the video.
 6. The method of claim 1 wherein the residualprocessing power is a function of at least an available system memory.7. The method of claim 1 further determining a video playback bit ratebased on the available system power.
 8. A method for processing video ina system for processing video in a real time, the system beingcharacterized by a first plurality of processing modules and a knownquantity of processing power, the method comprising: providing a video,the video being characterized a plurality of properties, the pluralityof properties including a video type and a video bit rate, the videotype being associated with a first compression method; determining thevideo type and the first compression method; determining a first usagefor the video, the first usage being associated with the video type andthe video bit rate; decoding the video based on the first compressionmethod; determining a residual processing power, the residual processingpower being associated with the first usage and a real playback;selecting a second plurality of processing modules based on the residualprocessing power, the second plurality of processing modules being asubset of the first plurality of processing modules; processing thevideo using the second plurality of processing modules; and providing anoutput in accordance to the real time wherein the video type is H.264.9. The method of claim 8 wherein the first usage is further beingassociated with a dimension of the video.
 10. The method of claim 8wherein the video comprises a video stream.
 11. The method of claim 8wherein the video comprises a video file.
 12. The method of claim 8wherein the selecting a second plurality of processing modules isfurther based on a power usage.
 13. The method of claim 8 wherein theselecting a second plurality of processing modules is further based on areal time performance metric.
 14. The method of claim 8 wherein thefirst plurality of processing modules comprises a de-blocking module.15. The method of claim 8 wherein the first plurality of processingmodules comprises a de-ringing module.
 16. The method of claim 8 whereinthe selecting a second plurality of processing modules is further basedon the video type.
 17. The method of claim 8 wherein the selecting asecond plurality of processing modules is further based on the videotype. The method of claim 8 further comprising: determining a change inthe first usage; selecting a third plurality of processing module basedon the change.
 18. The method of claim 8 further comprising determiningan order for processing the video.
 19. The method of claim 8 furthercomprising determining a level of processing for a first processingmodule, the level of processing being associated with the first usage.20. The method of claim 8 further comprising determining a scalingfactor for the video.
 21. The method of claim 8 further comprisingdetermining a second usage associated with scaling the video, whereinthe residual processing power is further associated with the secondusage.
 22. A method for processing a video in a system beingcharacterized by a known quantity of processing power, the methodcomprising: providing a video, the video being characterized a pluralityof properties, the plurality of properties including a video type and avideo bit rate, the video type being associated with a first compressionmethod; determining a first usage, the first usage being associated withdecoding the video; determining a second usage, the second usage beingassociated with scaling the video; selecting a plurality of processingmodules based on the first usage and second usage; processing the videousing the plurality of processing modules, wherein the plurality ofprocessing modules comprises a color adjustment module; and providing anoutput for a display.
 23. The method of claim 22 wherein the videocomprises a video stream.
 24. The method of claim 22 wherein theplurality of processing modules comprises a de-mosquito module.
 25. Themethod of claim 22 wherein the plurality of processing modules comprisesa color enhancement module.
 26. The method of claim 22 wherein theplurality of processing modules comprises a noise removal module. 27.The method of claim 24 wherein the plurality of processing modulescomprises a contrast enhance module.
 28. A system for processing avideo, the system comprising: a memory, the memory being configured tostore instructions; a processor configured to execute the instructions,the processor being characterized by a known quantity of processingpower; a user interface; a display; wherein: the instructions includes aplurality of software modules, the software modules including adecompression module, a control module, and a first plurality ofprocessing modules; the control module is configured to determine aplurality of characteristics of a video, the plurality ofcharacteristics including a file type and a bit rate, the file typebeing associated with a compression method; the control module isfurther configured to determine a first usage, the first usage beingassociated with the decoding the video; the control module is furtherconfigured to select a second plurality of processing modules, thesecond plurality of processing modules being a subset of the firstplurality of processing module; the second plurality of processingmodules is configured to process the video; the display is configured todisplay the processed video; wherein the system further comprises asource of the video selected from a group consisting of: a computer, acell phone, a media player, a DVD player, and a cable box.
 29. Thesystem of claim 28 wherein the video comprises a video stream.
 30. Thesystem of claim 28 wherein the first plurality of processing modulesincludes a de-interlacing module.
 31. The system of claim 28 furthercomprising a storage for storing the video.
 32. The system of claim 28wherein the display comprises an LCD.
 33. The system of claim 28 whereinthe processing power is measured by a percentage.
 34. The system ofclaim 28 wherein the processor comprises an embedded processor.
 35. Thesystem of claim 28 wherein the processor comprises an ARM CPU.
 36. Thesystem of claim 28 wherein the processor comprises a digital signalprocessing unit.
 37. The system of claim 28 further comprising acommunication interface for receiving the video over a network.
 38. Amethod for processing video, the method comprising: providing a systemfor processing video in real time, the system being characterized by apredetermined quantity of processing power; providing a video, the videobeing characterized a plurality of properties, the plurality ofproperties including a first frame rate, a video type, and a video bitrate, the video type being associated with a first compression method,the first frame rate being greater than 10 frames per second (FPS);determining the video type and the first compression method; determininga first usage for the video, the first usage being associated with atleast the video bit rate; decoding the video; determining a residualprocessing power, the residual processing power being associated withthe first usage; providing a first plurality of processing modules;selecting a second plurality of processing modules based on the residualprocessing power, the second plurality of processing modules being asubset of the first plurality of processing modules, the secondplurality of processing modules including a de-blocking module if thevideo is not in accordance to an H.264 standard; processing the videousing the second plurality of processing modules; and providing anoutput at a second frame rate, the second frame rate being at least 10FPS.
 39. The method of claim 38 wherein the video comprises a videostream.
 40. The method of claim 38 further comprising: determining anorder for processing the video using the second plurality of processingmodules.
 41. The method of claim 38 further comprising: detecting achange in the residual processing power; selecting a third plurality ofprocessing modules based on the change.
 42. A method for processingvideo in a system for processing video in a real time, the system beingcharacterized by a predetermined quantity of processing power, themethod comprising: providing a video, the video being characterized aplurality of properties, the plurality of properties including a firstframe rate, a video type, and a video bit rate, the video type beingassociated with a first compression method, the first frame rate beinggreater than 10 frames per second (FPS); determining the video type andthe first compression method; determining a first usage for the video,the first usage being associated with at least the video bit rate;decoding the video; processing the decoded video using at least a firstprocessing module, the first processing module being associated with asecond usage; determining a first residual processing power, the firstresidual processing power being associated with the first usage and thesecond usage; selecting at least a second processing module based on thefirst residual processing power, the second processing module beingassociated with a third usage; and processing the video using the secondprocessing module.
 43. The method of claim 42 further comprising:determining a second residual processing power, the second residualprocessing power being associated with at least the first usage, thesecond usage, and the third usage; selecting at least a third processingmodule based on the second residual processing power.